package ym.ecrm.core.dao.systemManagement;

import java.util.List;

import ym.ecrm.core.common.util.Pager;
import ym.ecrm.core.dao.base.IEntityDAO;
import ym.ecrm.core.domain.systemManagement.User;
import ym.ecrm.core.dto.systemManagement.UserQueryConditionDTO;

/**
 * 用户类的数据操作层接口
 * @author Princess
 * @version 1.0
 */
public interface IUserDAO extends IEntityDAO<User>{
	
	/**
	 * 通过UserQueryConditionDTO查询user
	 * UserQueryConditionDTO中包括的查询字段有：
	 * userCode用户编号，userName用户名称，department部门，state状态
	 * @param queryCondition 用来保存查询条件的pojo
	 * @return List<User> 返回符合条件的List<User>
	 */
	public List<User> findUsers(UserQueryConditionDTO queryCondition);
	
	/**
	 * 分页查询所有用户
	 * @param pageNumber 第几页
	 * @param pageSize 每页显示条数
	 * @return Pager<User> 返回分页辅助类Pager，
	 * 					可以通过Pager.getData()得到查询返回结果集list<User>
	 */
	public Pager<User> findUsers(int pageNumber, int pageSize);
	
	/**
	 * 按条件分布查询用户，用queryCondition来保存查询条件，
	 * queryCondition包括：
	 * userCode用户编号，userName用户名称，department部门，state状态等4个属性
	 * @param queryCondition 用来保存查询条件的pojo
	 * @param pageNumber 第几页
	 * @param pageSize 每页显示条数
	 * @return Pager<User> 返回分页辅助类Pager，
	 * 					可以通过Pager.getData()得到查询返回结果集list<User>
	 */
	public Pager<User> findUsers(UserQueryConditionDTO queryCondition, 
			int pageNumber, int pageSize);
	
	/**
	 * 查找指定的组织结构下的用户
	 * @param organizationId 组织结构的id
	 * @param pageNumber 第几页
	 * @param pageSize 每页显示的条数
	 * @return
	 */
	Pager<User> findUsersByOrganizationId(long organizationId, int pageNumber,
			int pageSize);
}
